perm filename OO8.FAI[TMP,LCS] blob sn#153827 filedate 1975-04-06 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00009 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002		TITLE OO
C00003 00003	SETFL:	CAIE EN,672	 :
C00004 00004	MVM:	HRLI OU,400000(MA)
C00006 00005	BACK:	HRRZI 6,-2(CX)
C00008 00006	FIXIT:	SETZM OUTFLG
C00010 00007	GETO:	MOVEM EN,TMP
C00012 00008	FILIN:	OPEN DEVN
C00015 00009	IPC:	21000,,0
C00017 ENDMK
C⊗;
	TITLE OO
	EXTERNAL JOBAPR,JOBTPC,JOBCNI,JOBDDT,$I
	EN←7 ↔ TS←10 ↔ OU←11 ↔ CX←13 ↔ MA←14 ↔ N←15
DDTST:	SKIPN JOBDDT
	JRST STAR
	JSR $I
INT:	RESET
	SETZM PTNUM
	HRRZI EN,INTRU
	HRRZM EN,JOBAPR
	HRLZI EN,120
	SETLIN EN
	SETACT ACTAB
	OUTSTR CRLF
STAR:	HRRZI N,MEM
	OUTSTR ASTR
	HRLZI EN,21000
	IENBW EN,
	INCHRS EN
	JRST .-2
	CAIN EN,15
	JRST STAR
	HRRZI TS,(N)
INLIN:	HRRZM EN,(TS)
	SETZM 1(TS)
	ADDI TS,2
	INCHRS EN
	CAIA
	JRST INLIN
	SUBI TS,4
	HRRZ EN,2(TS)
	TRNE EN,600
	JRST SETFL
MAIN:	OUTSTR SPACE
	HRRZI MA,MEM
	HRRZI CX,(N)
	JRST BGIN
SETFL:	CAIE EN,672	; :
	JRST SETF2
FIXTS:	SETOM OUTFLG
	ADDI TS,2
	OUTSTR CRLF
	JRST MAIN
SETF2:	CAIN EN,714	; L
	JRST STLIT
	CAIN EN,722	; R
	JRST STRPL
	CAIN EN,701	; A
	JRST STAD
	CAIN EN,677	; ?
	JRST DDTST
	CAIN EN,703	; C
	JRST PTCALL
	CAIN EN,720	; P
	JRST PTBEG
	CAIN EN,706	; F
	JRST FILIN
	CAIN EN,717	; O
	JRST FILO
	CAIN EN,713	; K
	JRST INT
	ADDI TS,4
	JRST FIXTS+2
STLIT:	SETOM LITF
	JRST FIXTS
STRPL:	SETOM RFLG
	JRST FIXTS
STAD:	SETOM ADFLG
	JRST FIXTS
MVM:	HRLI OU,400000(MA)
	HRRZI 6,2
	JRST LMVM
LAEQ:	HRRZI 6,2
	CAIE OU,(MA)
	ADDI 6,2
	SUBI 5,2
	HLL OU,(5)
LMVM:	MOVEM OU,(5)
	SETZM 1(5)
	ADDI 5,2
	SUBI TS,(6)
	ADDI 6,(5)
	HRLZI 6,(6)
	HRRI 6,(5)
	BLT 6,(TS)
	JRST LKMO
FDEQ:	MOVE 4,(MA)
	HRRZI 5,(N)
LKMO:	CAMN 4,(5)
	JRST EQU
ADIN:	ADDI 5,2
	CAIGE 5,(TS)
	JRST LKMO
	ADDI MA,2
BGIN:	CAIGE MA,(N)
	JRST FDEQ
	HRRZI MA,(CX)
	ADDI N,2
	CAIGE N,(TS)
	JRST FDEQ
	JRST BACK
EQU:	HRRZI OU,(MA)
	CAILE TS,2(5)
	CAIG N,2(MA)
	JRST CKLA
	MOVE 6,2(MA)
	CAMN 6,2(5)
	HRRI OU,2(MA)
CKLA:	CAIGE 5,2(N)
	JRST .+4
	HRRZ 6,-2(5)
	CAIN MA,2(6)
	JRST LAEQ
	CAIE OU,(MA)
	JRST MVM
	SKIPGE 1(5)
	JRST ADIN
	HRLI OU,400001(OU)
	AOJ OU,
	MOVEM OU,1(5)
	CAIGE CX,-2(TS)
	JRST ADIN
BACK:	HRRZI 6,-2(CX)
	ADDI 6,2
	SKIPGE 1(6)
	JRST NEGA+1
	SKIPGE OU,(6)
	AOBJN OU,NEGA
	HRRZI OU,(6)
	HRLI OU,400000(6)
NEGA:	MOVEM OU,1(6)
	CAIGE 6,-2(TS)
	JRST BACK+1
	CAIE TS,2(CX)
	JRST NOT1
	SUBI TS,2
	MOVE EN,(TS)
	SUB OU,ONEB
	CAME OU,EN
	CAIN CX,(OU)
	JRST NEW1
	SKIPGE OUTFLG
	AOBJN OU,FIXIT
	HRRZI EN,1(OU)
	AOBJN OU,GETO
NEW1:	SKIPL OUTFLG
	AOBJN OU,GETO
	HRRZI OU,1(CX)
	HRLI OU,400000(OU)
	JRST FIXIT-1
NOT1:	HRRZI EN,-2(TS)
	HRLI EN,400000(CX)
	MOVE OU,EN
	AOBJP OU,
	SKIPL OUTFLG
	JRST GETO
	MOVEM EN,(TS)
	MOVEM OU,1(TS)
	HRRZI OU,1(TS)
	HRLI OU,400000(OU)
	SKIPL ADFLG
	ADDI TS,2
FIXIT:	SETZM OUTFLG
	SKIPGE EN,TMP
	JRST NSEEN
CKFLS:	SKIPGE ADFLG
	JRST ADER
	SKIPGE LITF
	JRST LITA
	SKIPGE RFLG
	JRST RPLACE
	MOVEM OU,(EN)
	JRST GETO
LITA:	SUB OU,ONEB
	MOVEM OU,(EN)
	SETZM LITF
	JRST GETO
NSEEN:	MOVEM EN,(TS)
	HRRZI EN,1(TS)
	ADDI TS,2
	JRST CKFLS
RPLACE:	HRR OU,(OU)
	TLZ OU,400000
	TRO OU,400000
	MOVEM OU,(EN)
	SETZM RFLG
	JRST GETO
ADER:	MOVE 5,(EN)
	MOVE 4,-1(5)
	MOVEM 4,(TS)
	MOVEM 5,1(TS)
	MOVE 4,-1(OU)
	MOVEM 4,2(TS)
	MOVEM OU,3(TS)
	HRRZI OU,2(TS)
	HRLI OU,400000(TS)
	MOVEM OU,4(TS)
	AOBJP OU,
	MOVEM OU,5(TS)
	HRRZI OU,5(TS)
	HRLI OU,400000(OU)
	MOVEM OU,(EN)
	ADDI TS,6
	SETZM ADFLG
GETO:	MOVEM EN,TMP
	HRRM TS,STAR
	HRRZI MA,(TS)
	HRLI MA,700
	SKIPE PTNUM
	HRLI MA,1100
	ADDI TS,200
	TLZN OU,400000
	TRNN OU,400000
	JRST GOUT
	MOVE EN,OU
	HRRZI 4,777775
	JRST MKOUT
PUDO:	HRLI OU,(4)
	PUSH TS,OU
	MOVE OU,EN
GOUT:	HLRZ 4,OU
MOR:	MOVE EN,(4)
	TLZE EN,400000
	JRST PUDO
	TRNN EN,400000
	JRST DPCH
MKOUT:	HLRZ 6,EN
	HRLI EN,(EN)
	TRZ EN,400000
	MOVEM EN,(6)
	CAIA
DPCH:	IDPB EN,MA
ADO:	ADDI 4,2
	CAIG 4,(OU)
	JRST MOR
	TLNN TS,777777
	JRST TYOUT
	POP TS,OU
	HLRZ 4,OU
	JRST ADO
TYOUT:	HRRZI EN,15
	IDPB EN,MA
	HRRZI EN,12
	IDPB EN,MA
	SETZ EN,
	IDPB EN,MA
	SUBI TS,177
	SKIPE PTNUM
	JRST PTOUT
	OUTSTR (TS)
	JRST STAR
FILIN:	OPEN DEVN
	JRST ERRO
	SETZM FNAME+3
	LOOKUP FNAME
	JRST ERRO
	MOVE EN,INPO
	SETZ TS,
	INPUT EN
	HRRZ EN,SVN
	HRRZI N,SVN(EN)
	HRRM N,STAR
	SUBI EN,200
	JUMPLE EN,INT
	IORI EN,177
	MOVNS EN
	HRLZI EN,-1(EN)
	HRRI EN,SVN+177
	SETZ TS,
	INPUT EN
	JRST INT
ERRO:	OUTSTR QMARK
	JRST INT
FILO:	SUBI N,SVN
	HRRZM N,SVN
	IORI N,177
	MOVNS N
	HRLZI N,-1(N)
	HRRI N,SVN-1
	OPEN DEVN
	JRST ERRO
	SETZM FNAME+3
	ENTER FNAME
	JRST ERRO
	SETZ 16,
	OUTPUT N
	CLOSE
	JRST INT
IPC:	21000,,0
	0
INTRU:	MOVE EN,JOBCNI
	TLNN EN,1000
	DISMIS
	MOVE EN,JOBTPC
	CAIE EN,TEX+4
	MOVEM EN,IPC+1
	SETO EN,
	IMSKCL 1,EN
	UWAIT
	DEBREAK
TEX:	HRRZ 1,PTNUM
	HRRZI 2,PTNUM+2
	PTRDS 1
	OUTSTR (2)
	INTJEN IPC

PTBEG:	SKIPN PTNUM
	PTYGET EN
	JRST STAR
	MOVEM EN,PTNUM
	HRRZI TS,5
	PTJOBX EN
	JRST STAR
	HRRZI TS,3
	PTJOBX EN
	JRST STAR-1
PTCALL:	HRRZI TS,CALLC
PTOUT:	MOVE EN,PTNUM
	PTWRS9 EN
	JRST STAR

ACTAB:	ACTAB+1
	BLOCK 3
	1
QMARK:	45767706424
INPO:	IOWD 200,SVN
DEVN:	17
	SIXBIT/DSK/
	0
FNAME:	SIXBIT/ALY/
	SIXBIT/OOP/
	BLOCK 2
CALLC:	14060,,0
CRLF:	64240,,0
ASTR:	ASCIZ/*/
SPACE:	ASCIZ/ /
ONEB:	1,,1 ↔	TMP:	0
OUTFLG:	0    ↔	RFLG:	0
LITF:	0    ↔	ADFLG:	0
PTNUM:	0
	LOC 15000
SVN:	0
MEM:	BLOCK 20000
	END INT